<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <script>


        // promise的三个常用方法
        //   then(cb1 , cb2)   cb1成功会调用，cb2失败会调用    不会报错
        //   catch(cb)    失败的时候调用   会报错
        //   finally(cb)  无论成功或者失败都会调用   这个回调函数没有参数






        const p = new Promise((resolve , reject) => {
            setTimeout(() => {
                let n = parseInt(Math.random() * 100) ;
                if(n % 2) {
                    resolve(n) ;
                } else {
                    reject(n) ;
                }
            })
        })

        
        // 默认情况下  then方法接受两个参数(都是函数，成功调用第一个，失败就调用第二个)

        // 这种语法不是很友好 

        // p.then(
        //     data => {
        //         console.log(data);
        //     } ,
        //     err => {
        //         console.log(err + '失败了');
        //     }
        // )


        // catch 失败的时候就调用  ， 会报错

        p.then(data => {
            console.log(data);
        })


        p.catch(err => {
            console.log(err);
        })

        // finally 跟结果没有关系，没有参数的
        p.finally(() => {
            console.log('不管成功或者失败我都会被调用');
        })

    </script>
    
</body>
</html>